package com.mrx.example.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * RESTful API 返回值, 所有 Controller 都应该返回本类对象
 *
 * @param <T> data 数据类型
 * @author Mr.X
 */
@Getter
@Setter
@ToString
public class Result<T> extends BaseModel {

    private Integer code;

    private T data;

    private Result(Integer code, T data) {
        this.code = code;
        this.data = data;
    }

    public static final Result<String> E404 = new Result<>(404, null);

    /**
     * 创建一个 Result 对象
     *
     * @param <T>  data 数据类型
     * @param code Result 响应代码
     * @param data Result 响应内容
     * @return Result 对象
     */
    public static <T> Result<T> createResult(Integer code, T data) {
        return new Result<>(code, data);
    }

}
